/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.kwikMart.business;

import com.kwikMart.accesData.Cliente;
import com.kwikMart.accesData.DetallePedido;
import com.kwikMart.accesData.Pedido;
import java.io.Serializable;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

/**
 *
 * @author WIL
 */
@Stateless
public class ClienteEJB implements ClienteEJBLocal, Serializable {

    @PersistenceContext(unitName = "Kwik-E-Mart-ejbPU")
    private EntityManager em;

    @Override
    public Cliente autenticar(String pass, Integer numDocumento) {
        Boolean isLogin = false;
        Cliente result = null;
        try {
            String pasString = "'" + pass + "'";
            isLogin = (Boolean) em.createNativeQuery("select * from autenticarcliente(" + pasString + ", "
                    + numDocumento
                    + ")").getSingleResult();

        } catch (Exception e) {

        }
        if (isLogin) {
            result = (Cliente) em.createNamedQuery("Cliente.findByNumeroDocumento").setParameter("numeroDocumento", numDocumento).getSingleResult();
        }
        em.getEntityManagerFactory().getCache().evict(Cliente.class);
        return result;
    }

    @Override
    public boolean registrarCliente(Cliente newCliente) {
        Boolean isLogin = false;
        try {

            isLogin = (Boolean) em.createNativeQuery("select * from registrar_cliente(" + newCliente.getNumeroDocumento() + ", "
                    + newCliente.getIdTipoDocumento().getIdTipoDocumento() + ","
                    + "'" + newCliente.getNombres() + "',"
                    + "'" + newCliente.getApellidos() + "',"
                    + "'" + newCliente.getDireccion() + "',"
                    + "'" + newCliente.getTelefono() + "',"
                    + "'" + newCliente.getCorreo() + "',"
                    + "'" + newCliente.getClave() + "'"
                    + ")").getSingleResult();

        } catch (Exception e) {

        }
        em.getEntityManagerFactory().getCache().evict(Cliente.class);
        return isLogin;
    }

    @Override
    public Cliente refrescarInfoCliente(int numDocumento) {
        
        em.getEntityManagerFactory().getCache().evict(Cliente.class);
        em.getEntityManagerFactory().getCache().evict(Pedido.class);
        em.getEntityManagerFactory().getCache().evict(DetallePedido.class);
        
        Cliente result = null;
        try {
            result = (Cliente) em.createNamedQuery("Cliente.findByNumeroDocumento").setParameter("numeroDocumento", numDocumento).getSingleResult();
        } catch (Exception e) {
        }
        return result;
    }

}
